package ru.ncedu.java.tasks;

import ru.ncedu.java.tasks.operations.Sinus;

import java.util.HashMap;

/**
 * Классы не используемые программой лучше удалять
 *
 * Класс-черновик для изучения темы ClassLoader (Комментарии на английском)
 * @author dalas
 *
 */

public class ClassLoader {

	public static void main(String[] args)  {
		// Создаем хеш-карту для сохранения данных с XML-файла
		HashMap<String, String> hm = new HashMap<String, String>();     //Не желательно так Map создавать.
//		Map<String, String> hm = new HashMap<String, String>();         //Либо так
//		Map<String, String> hm = new HashMap<>();                       //Либо так (можно с Java 1.7)

		// Парсим XM
		/* Зачем в верху Map создавал. Лишняя операция по созданию занимающая время. Можно заменить на:
		 Map<String, String> hm = Parser.parse("src\\ru\\ncedu\\java\\tasks\\Operations.xml");
		 Переменные называй нормально не понятно, что хранит в себе переменная hm, если дальше не прочитать код.
		 Представь себя на месте человека, который будет читать такой код
		 */
		hm = Parser.parse("src\\ru\\ncedu\\java\\tasks\\Operations.xml");
		
		try {
			Class cl = Class.forName("ru.ncedu.java.tasks.Sinus");
			Sinus op = (Sinus) cl.newInstance();
			//System.out.println(Operation.operationType);
			
			//op.print();
		} catch (ClassNotFoundException e1){
			System.out.println("error1");   // Пиши более подробные сообщения об ошибках
			                                // Через System.out.println() ошибки не круто выводить
			                                // Либо проброс новой ошибки через throw new класс ошибки
											// Либо System.err
		} catch (InstantiationException e2) {
			System.out.println("error2");
		} catch (IllegalAccessException e3) {
			System.out.println("error3");
		}
		/* 3 catch блока можно заменить одним:
		 catch (Exception e) {}
		 Или предоставить обработку исклюючений методу:
		 public static void main(String[] args) throws Exception {
		 */
	}

}
